//
//  Person.m
//  OC2_实例变量可见度_方法
//
//  Created by dllo on 16/2/25.
//  Copyright © 2016年 Apon. All rights reserved.
//

#import "Person.h"

@implementation Person
#pragma mark - 自定义初始化方法
- (instancetype)initWithName:(NSString *)name{
    self = [super init];//调用父类的init方法 self指的是对象本身
    if (self) {         //加判断条件 当self指针不为空时 再进行赋值
                _name = name;//给某些实例变量赋值
    
    }
    return self;
}




#pragma mark - 重写init
- (instancetype)init{
    
    // 1. 调用父类的init方法. self指对象本身.
    self = [super init];
    // 加一个判断条件, 当self指针不为空时, 再进行赋值.
    if (self) {
       
    // 2. 给某个实例变量赋值.
        _age = 20;
    }
    
    
    
    return self;
}

#pragma mark - other
- (void)sayHi{
    NSLog(@"name:%@, sex:%@, age:%ld", _name, _sex, _age);
}
/** 需求: 通过一个方法, 把三个实例变量赋值. */
//{
//    _name = name;
//    _sex = sex;
//    _age = age;
//}


#pragma mark - setter, getter
/** 需求: 通过一个方法, 对_name实例变量赋值. */
-(void)setName:(NSString *)name{
    _name = name;
}
/** 需求: 通过一个方法, 取出_name实例变量值. */
-(NSString *)name{
    return _name;
}


/**构造器 */
+(instancetype)person {
    //alloc
 Person *per1 = [[Person alloc] init];
    //返回对象
    return per1;
}

+(instancetype)personWithname:(NSString *)name sex:(NSString *)sex age:(NSInteger)age{
    Person *per = [[Person alloc] initWithName:name sex:sex age:age];
    [per setName:name];
    
}
@end

